<!DOCTYPE html>
<html lang="zh-cn">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>javascript 阶段</title>
</head>

<body>


    <script>
            // 使用递归解决猴子吃桃子问题

            // 问题：
            //
            // 猴子n天前摘下若干个桃子，当即吃了一半，还不过瘾，又多吃了一个， 
            // (第二天剩下的X个桃子 : (x+1)*2 )

            // 第二天早上又将剩下的桃子吃掉一半，又多吃了一个。

            // 以后每天早上都吃前一天剩下的一半零一个。

            // 到 1天前早上想再吃时，发见只剩下一个桃子了。求 n 天前一共摘多少个桃子？

            // 假设4天
            // 第一天    (( ((   (1 + 1) * 2   ) + 1) * 2 ) + 1 ) * 2       4天前 
            // 第二天    (( (1 + 1) * 2   ) + 1) * 2                        3天前 
            // 第三天    (1 + 1) * 2                                        2天前
            // 第四天    1                                                  1天前 (n)


            // 找依赖关系
            // 第一天    (peach(4-1) + 1) * 2 ) + 1 ) * 2        4天前 
            // 第二天    (peach(3-1)+ 1) * 2                     3天前 
            // 第三天    (peach(2-1) + 1) * 2                    2天前 
            // 第四天    1                                       1天前 (n)     


            //
            // 要求：
            //
            // 1. 创建 peach 函数接收 n 作为参数，n 表示猴子是几天前摘的桃子(n > 1)
            // 2. 调用 peach 函数传入天数返回猴子一共吃了几个桃子
            // 3. 使用递归实现该功能
            //

            // 思考：
                // 如何找到依赖关系

            // 运行效果：
                // peach(4) // 22
                // peach(10) // 1534


            // 编写代码：
            function peach(n) {
                if(n == 1 ){ // 当前条件作为跳出当前递归（循环）
                    return 1;
                }
                return  (peach(n-1) + 1) * 2;  
                // return  (peach(3-1) + 1) * 2 ;
                // return  ((peach(2-1) + 1) * 2 + 1) * 2 ;   
                //   ((1 + 1) * 2 + 1) * 2 
                //   (2 * 2 + 1) * 2 
                //   5 * 2 
                //   10
                // 需要等待函数被调用完成了，方可计算结果并且返回
                // 如果没有结束执行递归的条件，就会出现死循环
            }

            // 调用计算桃子的函数
            var res = peach(3);
            console.log(res);




    </script>
</body>

</html>